﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Biciq.Datos;
using System.Collections.Generic;
using System.Linq;

namespace Biciq.Silverlight.UI
{
    public class EditarTarjetaVistaModelo:VistaModeloBase
    {
        public EditarTarjetaVistaModelo(List<Tarjeta> tarjetasActuales,string tipo)
        {
            TarjetasIngresadas = new List<Datos.Tarjeta>();
            TarjetasActuales = tarjetasActuales;
            Tipo = tipo;
            NuevaTarjeta();
        }

        /// <summary>
        /// Ingresar nueva Tarjeta.
        /// </summary>
        private void NuevaTarjeta()
        {
            Tarjeta = new Tarjeta();
            Tarjeta.Estado = "DISPONIBLE";
            Tarjeta.FechaCreacion = DateTime.Now;
            Tarjeta.id = Guid.NewGuid();

           
                Tarjeta.Tipo = Tipo;
          
          
            
        }

        private string _tipo;

        public string Tipo
        {
            get { return _tipo; }
            set 
            {
                _tipo = value;
                RaisePropertyChanged("Tipo");
            }
        }


        private int _numeroTarjetas;

        public int NumeroTarjetas
        {
            get { return _numeroTarjetas; }
            set 
            {
                _numeroTarjetas = value;
                RaisePropertyChanged("NumeroTarjetas");
            }
        }


        private Tarjeta _tarjeta;

        public Tarjeta Tarjeta
        {
            get { return _tarjeta; }
            set
            
            { 
                _tarjeta = value;
                RaisePropertyChanged("Tarjeta");
            }
        }

        private List<Tarjeta> _tarjetasIngresadas;

        public List<Tarjeta> TarjetasIngresadas
        {
            get { return _tarjetasIngresadas; }
            set 
            
            {
                _tarjetasIngresadas = value;
                RaisePropertyChanged("TarjetasIngresadas");
            }
        }


        private List<Tarjeta> _tarjetasActuales;

        public List<Tarjeta> TarjetasActuales
        {
            get { return _tarjetasActuales; }
            set
            {
                _tarjetasActuales = value;
                RaisePropertyChanged("TarjetasActuales");
            }
        }
     
        /// <summary>
        /// Comando para guardar Tarjeta.
        /// </summary>
        public override void Guardar()
        {
            foreach (var item in TarjetasIngresadas)
            {
                BiciqContexto.Tarjetas.Add(item);
               
            }
            BiciqContexto.SubmitChanges().Completed += delegate
            {
                if (Tipo == "Tarjeta")
                {
                    LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("Las Tarjetas se han dado de alta exitosamente", "Alta de Tarjetas Exitosa", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                }
                else
                {
                    LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("Lo Tags se han dado de alta exitosamente", "Alta de Tags Exitosa", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                }
                CerrarVentana();
            };
        }
        /// <summary>
        /// Comando para Agregar tarjeta.
        /// </summary>
        public void AgregarTarjeta()
        {
            if (BiciqContexto.Tarjetas.Where(t=>t.codigo == Tarjeta.codigo).Count()>0)
            {
               LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("Ya existe una tarjeta con el mismo Códgio RFID", "Error Registro de Tarjeta", LogicStudio.Framework.UI.Utilidades.TipoVentana.Error);
               NuevaTarjeta();
                return ;
            }

            if (BiciqContexto.Tarjetas.Where(t => t.codigo == Tarjeta.codigo).Count() > 0)
            {
               LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("Ya existe una tarjeta con el mismo Códgio RFID", "Error Registro de Tarjeta", LogicStudio.Framework.UI.Utilidades.TipoVentana.Error);
               NuevaTarjeta();
               return;
            }
           
                TarjetasIngresadas.Add(Tarjeta);
                NumeroTarjetas = TarjetasIngresadas.Count;

                NuevaTarjeta();
        }
    }
}
